import { descriptionProps } from 'element-plus'
import { createRouter, createWebHistory } from 'vue-router'

const routes = [
  {
    path: "/",
    name: "home",
    component: () => import(/* webpackChunkName: "home" */ '../views/Index.vue'),
    meta: {
      title: "首页",
      description: "欢迎使用积分管理系统",
      icon: "HomeFilled",
      showInMenu: false,
    }
  },
  {
    path: '/disciple',
    name: 'disciple',
    component: () => import(/* webpackChunkName: "disciple" */ '../views/disciple/Index.vue'),
    meta: {
      title: "弟子管理",
      description: "管理弟子的考核分数",
      showInMenu: true,
      icon: `<svg  xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024"><path fill="currentColor" d="M512 512a192 192 0 1 0 0-384 192 192 0 0 0 0 384m0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512m320 320v-96a96 96 0 0 0-96-96H288a96 96 0 0 0-96 96v96a32 32 0 1 1-64 0v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 1 1-64 0"></path></svg>`
    }
  },
  {
    path: '/disciple/detail',
    name: 'disciple-detail',
    component: () => import(/* webpackChunkName: "disciple-detail" */ '../views/disciple/detail.vue'),
    meta: {
      showInMenu: false,
      title: "弟子详情",
      description: "查看和编辑弟子详细信息",
    }
  },
  {
    path: '/rule',
    name: 'rule',
    component: () => import(/* webpackChunkName: "rule" */ '../views/scoring-rules/Index.vue'),
    meta: {
      title: "规则管理",
      description: "可以新增，修改规则",
      showInMenu: true,
      icon: `<svg  xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024"><path fill="currentColor" d="M192 128v768h640V128zm-32-64h704a32 32 0 0 1 32 32v832a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m160 448h384v64H320zm0-192h192v64H320zm0 384h384v64H320z"></path></svg>`
    }
  },
  {
    path: "/data",
    name: "data",
    component: () => import(/* webpackChunkName: "data" */ '../views/data/Index.vue'),
    meta: {
      title: "数据管理",
      description: "导入、导出json数据，管理周期信息，导出Excel表",
      showInMenu: true,
      icon: `<svg  xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024"><path fill="currentColor" d="M359.168 768H160a32 32 0 0 1-32-32V192H64a32 32 0 0 1 0-64h896a32 32 0 1 1 0 64h-64v544a32 32 0 0 1-32 32H665.216l110.848 192h-73.856L591.36 768H433.024L322.176 960H248.32zM832 192H192v512h640zM342.656 534.656a32 32 0 1 1-45.312-45.312L444.992 341.76l125.44 94.08L679.04 300.032a32 32 0 1 1 49.92 39.936L581.632 524.224 451.008 426.24 342.656 534.592z"></path></svg>`
    }
  },
  {
    path: '/:pathMatch(.*)',
    redirect: "/",
    meta: {
      title: "重定向",
      description: "重定向到首页",
      showInMenu: false,
    }
  }
]

// 根据环境选择路由模式
// 开发环境使用 history 模式，生产环境使用 hash 模式（避免需要服务器配置）
// 如果需要生产环境也使用 history 模式，可以修改这里的逻辑
// const isProduction = process.env.NODE_ENV === 'production'
// const useHashMode = isProduction || process.env.VUE_APP_USE_HASH === 'true'

// 动态导入 hash 模式（避免类型错误）
// let history: any
// if (useHashMode) {
//   // 使用 require 动态导入，避免 TypeScript 类型检查问题
//   const vueRouter = require('vue-router')
//   history = vueRouter.createWebHashHistory(process.env.BASE_URL)
// } else {
//   history = createWebHistory(process.env.BASE_URL)
// }

const router = createRouter({
  history: createWebHistory(process.env.BASE_URL),
  routes
})

// /**
//  * 检测当前路由模式
//  * @returns 'hash' | 'history'
//  */
// export function getRouterMode(): 'hash' | 'history' {
//   // 方法1: 检查构造函数名称（最可靠）
//   if (router.history && router.history.constructor && router.history.constructor.name) {
//     const historyType = router.history.constructor.name
//     if (historyType === 'HashHistory') {
//       return 'hash'
//     }
//     if (historyType === 'WebHistory') {
//       return 'history'
//     }
//   }

//   // 方法2: 检查当前 URL 是否包含 hash（备用方法）
//   // Hash 模式的 URL 格式: http://example.com/#/path
//   // History 模式的 URL 格式: http://example.com/path
//   if (window.location.hash && window.location.hash.startsWith('#/')) {
//     return 'hash'
//   }

//   // 方法3: 根据配置判断（如果 history 未初始化）
//   const isProduction = process.env.NODE_ENV === 'production'
//   const useHashMode = isProduction || process.env.VUE_APP_USE_HASH === 'true'
//   if (useHashMode) {
//     return 'hash'
//   }

//   // 默认返回 history
//   return 'history'
// }

/**
 * 路由导航守卫
 */
router.beforeEach((to: { path: any }, from: { path: any }, next: () => void) => {
  next()
})

/**
 * 路由切换完成后的操作
 */
router.afterEach((to: { path: any; meta: { title: string } }, from: any) => {
  // 适合用于页面统计、修改页面标题等
  if (to.meta.title) {
    document.title = '师门积分系统 - ' + to.meta.title as string
  } else {
    document.title = '师门积分系统 '
  }
})

export default router
